Ansibleでcreate databaseをしたときにでたエラーの対処
バンクーバーの塩谷です。
端末(Mac)からEC2インスタンスにインストールされているMySQLにAnsibleを使用してdatabaseを作成しようとしたところ、エラーが発生しました。対処に少しハマってしまったのでメモします。
エラー内容
fatal: [Instance1]: FAILED! => {"changed": false, "msg": "The MySQL-python module is required."}
fatal: [Instance1]: FAILED! => {"changed": false, "msg": "The MySQL-python module is required."} PLAY [Instance1] ***************************************************************************************************************** TASK [Gathering Facts] *********************************************************************************************************** ok: [Instance1] TASK [create mysql database] ***************************************************************************************************** fatal: [Instance1]: FAILED! => {"changed": false, "msg": "The MySQL-python module is required."} PLAY RECAP *********************************************************************************************************************** Instance1 : ok=1 changed=0 unreachable=0 failed=1
Playbook側の動きとしては、 ・MySQLのインストール ・MySQL-Pythonのインストール ・データベースの作成 です。
ansibleのバージョンは2.4.3.0。
対処
MySQL-pythonモジュールが必須ですよ、とのエラーですがplaybook側でもちゃんとインストールする様に指定しているし、EC2インスタンス側でもMySQL-pythonは入っているのに何でだろう。。。と思っていたら、
Playbook(一部抜粋)
- name: Install MySQL-Python module yum: name=MySQL-python
EC2インスタンス
# yum list installed | grep python MySQL-python26.x86_64 1.2.3-11.14.amzn1 @amzn-main
# yum install -y MySQL-python Loaded plugins: priorities, update-motd, upgrade-helper Package MySQL-python26-1.2.3-11.14.amzn1.x86_64 already installed and latest version Nothing to do
バージョン違いが原因でしたー!
EC2インスタンスで(Amazon Linuxです)、pythonのバージョンを確認すると
# python --version Python 2.7.9
pythonのバージョンが2.7.9なのに対して、MySQL-python26が入っていました。
# yum list installed | grep python MySQL-python26.x86_64 1.2.3-11.14.amzn1 @amzn-main
そのため、MySQL-python27をインストールします。
# yum install MySQL-python27 # yum list installed | grep python MySQL-python26.x86_64 1.2.3-11.14.amzn1 @amzn-main MySQL-python27.x86_64 1.2.3-11.14.amzn1 @amzn-main ★入った
Playbook側でも、MySQL-python27をインストールするように変更。
- name: Install MySQL-Python module yum: name=MySQL-python27
playbookを実行し、エラーなく完了しました。
PLAY [Instance1] ***************************************************************************************************************** TASK [Gathering Facts] *********************************************************************************************************** ok: [Instance1] TASK [create mysql database] ***************************************************************************************************** changed: [Instance1] TASK [create mysql user] ********************************************************************************************************* changed: [Instance1] PLAY RECAP *********************************************************************************************************************** Instance1 : ok=3 changed=2 unreachable=0 failed=0
以上でーす。